/* =============================================================================
 * PROJET           	: repartition
 * NOM DU FICHIER   	: optimisation.h
 * OBJET            	: Declaration des procedure d'optimisation de la solution.
 *								le programme resolution contenant la premiere etape de 
 *								l'algorithme.
 * -----------------------------------------------------------------------------
 * DATE DE CREATION 	: 27/10/2009
 * AUTEUR           	: Sha LIU, Yves BOGE
 * ============================================================================= */


#include "ecriture.h"



/* description :	procedure de calcul des f(x)
 * entree :			element de type t_donne_pb
 * sortie :			pb avec les f(x), fmoins, et fplus calcules
 */
void calc_f(t_donnees_pb* pb);


/* description :	procedure de determination de r, s, k, l
 * entree :			element de type t_donne_pb
 * sortie :			tableau contenant les indice de r, s, k, l
 */
int* get_rskl(t_donnees_pb* pb);


/* description :	programme principal de la résolution.
 * entree :			element de type t_donne_pb
 * sortie :			pointeur vers le pb resolu
 */
t_donnees_pb* resolution(t_donnees_pb* pb, bool trace_on);


/* description :	deuxieme partie de l'algorithme
 * entree :			element de type t_donne_pb
 * sortie :			redirection vers une autre partie de l'algorithme
 * 					pointeur vers le pb resolu
 */
t_donnees_pb* algo_part_2(t_donnees_pb* pb, bool trace_on);


/* description :	troisieme partie de l'algorithme
 * entree :			element de type t_donne_pb
 * sortie :			pointeur vers le pb resolu
 */
t_donnees_pb* algo_part_3(t_donnees_pb* pb, bool trace_on);


/* description :	quatrieme partie de l'algorithme
 * entree :			element de type t_donne_pb
 * sortie :			redirection vers une autre partie de l'algorithme
 * 					pointeur vers le pb resolu
 */
t_donnees_pb* algo_part_4(t_donnees_pb* pb, bool trace_on);


/* description :	cinquieme partie de l'algorithme
 * entree :			element de type t_donne_pb
 * sortie :			redirection vers une autre partie de l'algorithme ou fin
 * 					pointeur vers le pb resolu
 */
t_donnees_pb* algo_part_5(t_donnees_pb* pb, bool trace_on);


/* description :	procedure calculant les differentes repârtitions possibles
 *						de n parmis m
 * entree :			n, m, pointeur sur un entier
 * sortie :			nb de tableaux de m element retournees
 *						rep pointe vers ces tableaux
 */
int get_rep( int n, int m, int* rep);

